package main

import (
	"bufio"
	"fmt"
	"os"
)

// 实现找到一串数字中出现次数最多和最少的数字以及他们出现的次数
// 定义一个大小为10的整形数组，然后遍历统计每个字符出现的数次，每出现一次，对应的数字下标就加一，最后遍历统计
func main() {

	reader := bufio.NewReader(os.Stdin)
	fmt.Print("请输入一个字符串: ")
	input, _ := reader.ReadString('\n') // 读取一行输入，包括换行符
	input = input[:len(input)-1]        // 去掉末尾的换行符

	// 统计字符出现次数
	charCount := make(map[rune]int)
	for _, ch := range input {
		charCount[ch]++
	}

	// 初始化最多和最少次数的变量
	var maxChar rune //uint32
	var minChar rune
	maxCount := 0
	minCount := len(input) + 1 // 初始化为比字符串长度大的数，确保第一次比较时会更新

	// 找出出现次数最多和最少的字符
	for ch, count := range charCount {
		if count > maxCount {
			maxChar = ch
			maxCount = count
		}
		if count < minCount && count > 0 { // 确保不是0次数
			minChar = ch
			minCount = count
		}
	}

	// 输出结果
	fmt.Printf("出现次数最多的字符: '%c'，出现次数: %d\n", maxChar, maxCount)
	fmt.Printf("出现次数最少的字符: '%c'，出现次数: %d\n", minChar, minCount)
	//var numbers string
	//var arr [10]int
	//reader := bufio.NewReader(os.Stdin)
	//numbers, _ = reader.ReadString('\n')
	//for i := 0; i < len(numbers); i++ {
	//	if numbers[i] == '1' {
	//		arr[1]++
	//	} else if numbers[i] == '2' {
	//		arr[2]++
	//	} else if numbers[i] == '3' {
	//		arr[3]++
	//	} else if numbers[i] == '4' {
	//		arr[4]++
	//	} else if numbers[i] == '5' {
	//		arr[5]++
	//	} else if numbers[i] == '6' {
	//		arr[6]++
	//	} else if numbers[i] == '7' {
	//		arr[7]++
	//	} else if numbers[i] == '8' {
	//		arr[8]++
	//	} else if numbers[i] == '9' {
	//		arr[9]++
	//	} else if numbers[i] == '0' {
	//		arr[0]++
	//	}
	//}
	//for i := 0; i < 10; i++ {
	//	fmt.Println(arr[i])
	//}
}
